#include <stdio.h>

//有序数组下的二分查找
int binary_search(int arr[],int k,int sz)
{
    int left = 0;
    int right = sz-1;
    while(left<=right)
    {
        //int mid = (left+right)/2;
        int mid = left+(right-left)/2; //防止数据过大越界
        if(arr[mid]<k)
        {
            left = mid+1;
        }
            else if(arr[mid]>k)
        {
            right = mid-1;
        }
        else
        {
            return mid;
        }
    }
    return -1;
}

int main(){
    int arr[] = {0,1,2,3,4,5,6,7,8,9,10};
    int k = 17;  //被查找数
    int sz = sizeof(arr)/sizeof(arr[0]);  //数组的大小
    int ret = binary_search(arr,k,sz);
    if(ret == -1)
    {
        printf("找不到\n");
    }
    else
    {
        printf("找到了，下标是:%d\n",ret);
    }
    return 0;
}